home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / BCCGRX12.ZIP / contrib / bcc2grx / src / readkey.c < prev    next >
C/C++ Source or Header  |  1993-05-22  |  4KB  |  111 lines

  1. #define set_readkey(c) ({ ch = (c); return '\0';})
  2.  
  3. #include <pc.h>
  4. #include <p2c/tasten.h>
  5.  
  6. char ReadKey(void)
  7. {
  8.   static char ch = '\0';
  9.      char res;
  10.      int  key;
  11.  
  12.   if (ch != '\0') {
  13.     res = ch;
  14.     ch = '\0';
  15.     return res;
  16.   }
  17.   do {
  18.     switch (key=getkey()) {
  19.       case F1        : set_readkey('\x3B');
  20.       case F2        : set_readkey('\x3C');
  21.       case F3        : set_readkey('\x3D');
  22.       case F4        : set_readkey('\x3E');
  23.       case F5        : set_readkey('\x3F');
  24.       case F6        : set_readkey('\x40');
  25.       case F7        : set_readkey('\x41');
  26.       case F8        : set_readkey('\x42');
  27.       case F9        : set_readkey('\x43');
  28.       case F10       : set_readkey('\x44');
  29.       case sF1       : set_readkey('\x54');
  30.       case sF2       : set_readkey('\x55');
  31.       case sF3       : set_readkey('\x56');
  32.       case sF4       : set_readkey('\x57');
  33.       case sF5       : set_readkey('\x58');
  34.       case sF6       : set_readkey('\x59');
  35.       case sF7       : set_readkey('\x5A');
  36.       case sF8       : set_readkey('\x5B');
  37.       case sF9       : set_readkey('\x5C');
  38.       case sF10      : set_readkey('\x5D');
  39.       case cF1       : set_readkey('\x5E');
  40.       case cF2       : set_readkey('\x5F');
  41.       case cF3       : set_readkey('\x60');
  42.       case cF4       : set_readkey('\x61');
  43.       case cF5       : set_readkey('\x62');
  44.       case cF6       : set_readkey('\x63');
  45.       case cF7       : set_readkey('\x64');
  46.       case cF8       : set_readkey('\x65');
  47.       case cF9       : set_readkey('\x66');
  48.       case cF10      : set_readkey('\x67');
  49.       case aF1       : set_readkey('\x68');
  50.       case aF2       : set_readkey('\x69');
  51.       case aF3       : set_readkey('\x6A');
  52.       case aF4       : set_readkey('\x6B');
  53.       case aF5       : set_readkey('\x6C');
  54.       case aF6       : set_readkey('\x6D');
  55.       case aF7       : set_readkey('\x6E');
  56.       case aF8       : set_readkey('\x6F');
  57.       case aF9       : set_readkey('\x70');
  58.       case aF10      : set_readkey('\x71');
  59.       case alt_Q     : set_readkey('\x10');
  60.       case alt_W     : set_readkey('\x11');
  61.       case alt_E     : set_readkey('\x12');
  62.       case alt_R     : set_readkey('\x13');
  63.       case alt_T     : set_readkey('\x14');
  64.       case alt_Z     : set_readkey('\x15');
  65.       case alt_U     : set_readkey('\x16');
  66.       case alt_I     : set_readkey('\x17');
  67.       case alt_O     : set_readkey('\x18');
  68.       case alt_P     : set_readkey('\x19');
  69.       case alt_A     : set_readkey('\x1E');
  70.       case alt_S     : set_readkey('\x1F');
  71.       case alt_D     : set_readkey('\x20');
  72.       case alt_F     : set_readkey('\x21');
  73.       case alt_G     : set_readkey('\x22');
  74.       case alt_H     : set_readkey('\x23');
  75.       case alt_J     : set_readkey('\x24');
  76.       case alt_K     : set_readkey('\x25');
  77.       case alt_L     : set_readkey('\x26');
  78.       case alt_Y     : set_readkey('\x2C');
  79.       case alt_X     : set_readkey('\x2D');
  80.       case alt_C     : set_readkey('\x2E');
  81.       case alt_V     : set_readkey('\x2F');
  82.       case alt_B     : set_readkey('\x30');
  83.       case alt_N     : set_readkey('\x31');
  84.       case alt_M     : set_readkey('\x32');
  85.       case INS       : set_readkey('\x52');
  86.       case HOME      : set_readkey('\x47');
  87.       case PGUP      : set_readkey('\x49');
  88.       case DEL       : set_readkey('\x53');
  89.       case ENDE      : set_readkey('\x4F');
  90.       case PGDN      : set_readkey('\x51');
  91. /*    case sINS      : set_readkey('\x05');  */
  92. /*    case sDEL      : set_readkey('\x07');  */
  93.       case cINS      : set_readkey('\x04');
  94.       case cHOME     : set_readkey('\x77');
  95.       case cPGUP     : set_readkey('\x84');
  96.       case cDEL      : set_readkey('\x06');
  97.       case cENDE     : set_readkey('\x75');
  98.       case cPGDN     : set_readkey('\x76');
  99.       case UP        : set_readkey('\x48');
  100.       case LEFT      : set_readkey('\x4B');
  101.       case DOWN      : set_readkey('\x50');
  102.       case RGHT      : set_readkey('\x4D');
  103.       case cLEFT     : set_readkey('\x73');
  104.       case cRGHT     : set_readkey('\x74');
  105.       case sTAB      : set_readkey('\x0F');
  106.       default        : if (key < 256)
  107.              return (char) key;
  108.     }
  109.   } while (1);
  110. }
  111.